
/* Enemy.h
* obg
* 1-13-10
*/

#ifndef ENEMY_H
#define ENEMY_H

#include "Character.h"
#include <vector>

class Enemy : public Character
{
    private:
        int enemy_speed,
            //DRAW_X,
            spawn_x,
            distance_to_enemy,
            frame_left,
            frame_right,
            death_frame_x,
            death_frame_y;

        int bullet_fire_rate;

        int animation_speed_left,
            animation_speed_right;

        int enemy_current_floor_y;

        bool following_player;
              //moving_right_2;

    private:
        void Draw_enemy_going_right();
        void Draw_enemy_going_left();

        void Draw_enemy_standing_right();
        void Draw_enemy_standing_left();

        void Draw_death( int bgX3, int y);

        void Move_frame_left();
        void Move_frame_right();

        void Draw_me( int bgX3, int y, int player_level_x, int player_screen_x );

        void Fire_bullet();

    public:
        Enemy( int spawn_point_x, int spawn_point_y );
        Enemy( const Enemy & );
        ~Enemy();

        void Set_enemy( int spawn_point_x, int spawn_point_y );

        void Draw( int bgX3, int y, int player_level_x, int player_screen_x );
        bool Following_player();

        /* top_level is the level that the enemy needs to land on */
        void Jump();
        //void Jump_left( int top_level );
};


class Enemy_control
{
    private:
        vector< Enemy > enemy_vector; // change this to a vector

    public:
        Enemy_control();
        ~Enemy_control();

        void Add_enemy( Enemy a_enemy );
        void Draw( int bgX3, int y, int player_level_x, int player_screen_x );

//        void Iterate_iterator();
//        void Reset_iterator_begin();
        vector< Enemy >::iterator Get_enemy_control_iter();
        vector< Enemy >::iterator Get_enemy_control_begin();
        vector< Enemy >::iterator Get_enemy_control_end();
};
#endif
